import 'package:microbject/core/runtime/lang/logger_enum.dart';

/// 日志信息。
class LoggerInfo {
  // /**
  //  * 记录。
  //  *
  //  * @certify 220326
  //  */
  // public record: boolean;

  // 发送者
  Object? sender;
  // /** 唯一标识 */
  // public id: string;
  // /** 类型 */
  // public type: string;
  // /** 版本 */
  // public version: number;

  // /**
  //  * 环境。
  //  *
  //  * @certify 220326
  //  */
  // public environment: string;

  /// 级别
  LoggerEnum levelCd = LoggerEnum.unknown;

  /// 时长
  int span = 0;

  // /**
  //  * 代码。
  //  */
  // public code: string;

  /// 消息
  String? message;

  // /**
  //  * 消息代码。
  //  *
  //  * @certify 220327
  //  */
  // public messageCode: string;

  /// 参数集合
  List<dynamic>? parameters;

  // /**
  //  * 项目名称。
  //  *
  //  * @certify 220326
  //  */
  // public projectName: string;

  // /**
  //  * 项目版本。
  //  *
  //  * @certify 220326
  //  */
  // public projectVersion: string;

  // /**
  //  * 模块名称。
  //  *
  //  * @certify 220326
  //  */
  // public moduleName: string;

  // /**
  //  * 模块版本。
  //  *
  //  * @certify 220326
  //  */
  // public moduleVersion: string;

  // /** 项目类 */
  // public className: string;
  // /** 文件名称 */
  // public fileName: string;
  // /** 文件行 */
  // public fileNumber: number;
  // /** 主机名称 */
  // public recordHostname: string;
  // /** 主机地址 */
  // public recordIp: string;
  // /** 线程编号 */
  // public recordThreadId: string;
  // /** 线程名称 */
  // public recordThreadName: string;
  // /** 线程代码 */
  // public threadCode: string;

  // /**
  //  * 发送主机名称。
  //  *
  //  * @certify 220326
  //  */
  // public forwardHostname: string;

  // /**
  //  * 发送主机地址。
  //  *
  //  * @certify 220326
  //  */
  // public forwardIp: string;

  // /** 发送项目名称 */
  // public requestProjectName: string;

  // /**
  //  * 流程链路名称。
  //  *
  //  * @certify 220326
  //  */
  // public processName: string;

  // /** 流程链路编号 */
  // public processId: string;
  // /** 链路ID */
  // public linkTraceId: string;
  // /** 链路环ID */
  // public linkSpanId: string;
  // /** 上一环链路ID */
  // public linkParentId: string;
  // /** 链路出口 */
  // public linkExportabelId: string;
  // /** 当前用户会话 */
  // public userKey: string;
  // /** 当前用户编号 */
  // public userId: string;
  // /** 当前用户名称 */
  // public userName: string;
  // /** 请求路径 */
  // public requestUrl: string;
  // /** 请求方法 */
  // public requestMethod: string;
  // /** 请求条件 */
  // public requestQuery: string;
  // /** 请求内容 */
  // public requestBody: string;
  // 时间
  String? date;

  // /**
  //  * 错误。
  //  *
  //  * @certify 220327
  //  */
  // public error: Error;

  // /**
  //  * 消息。
  //  *
  //  * @certify 220326
  //  */
  // public description: string;

  // /**
  //  * 栈集合。
  //  *
  //  * @certify 220327
  //  */
  // public stacks: Types<ProcessStack>;

  // /**
  //  * 构造处理。
  //  */
  // public constructor() {
  //    // 设置属性
  //    this.version = 1;
  //    this.stacks = new Types<ProcessStack>();
  // }

  // /**
  //  * 生成栈信息。
  //  *
  //  * @certify 220327
  //  */
  // public makeStacks(): string {
  //    var source = '';
  //    var stacks = this.stacks;
  //    if (stacks) {
  //       var count = stacks.count;
  //       for (var i = 0; i < count; i++) {
  //          var stack = stacks.get(i);
  //          if (i > 0) {
  //             source += '\n';
  //          }
  //          source += ' - ' + stack.threadName + ' | ' + stack.className + '.' + stack.methodName + ' | ' + stack.source;
  //       }
  //    }
  //    return source;
  // }

  // /**
  //  * 保存信息为JSON配置。
  //  *
  //  * @certify 220326
  //  * @param jconfig 配置信息
  //  * @return JSON配置
  //  */
  // public saveJson(jconfig?: any): any {
  //    var jlogger = jconfig || new Object() as any;
  //    jlogger.id = GuidUtil.makeUuid();
  //    jlogger.type = 'logger';
  //    jlogger.version = this.version;
  //    jlogger.environment = this.environment;
  //    jlogger.level_cd = LoggerEnum.convertName(this.levelCd);
  //    jlogger.code = this.code;
  //    jlogger.message = this.message;
  //    jlogger.message_code = this.messageCode;
  //    jlogger.message_parameters = this.parameters;
  //    // jlogger.project_name = RuntimeUtil.projectName;
  //    jlogger.project_version = this.projectVersion;
  //    jlogger.module_name = this.moduleName;
  //    jlogger.module_version = this.moduleVersion;
  //    jlogger.class_name = this.className;
  //    jlogger.file_name = this.fileName;
  //    jlogger.file_number = this.fileNumber;
  //    jlogger.record_hostname = this.recordHostname;
  //    jlogger.record_ip = this.recordIp;
  //    jlogger.record_thread_id = this.recordThreadId;
  //    jlogger.record_thread_name = this.recordThreadName;
  //    jlogger.thread_code = this.threadCode;
  //    jlogger.request_hostname = this.forwardHostname;
  //    jlogger.request_ip = this.forwardIp;
  //    jlogger.request_project_name = this.requestProjectName;
  //    jlogger.process_name = 'service';
  //    jlogger.process_id = GuidUtil.makeUuid();
  //    jlogger.link_trace_id = this.linkTraceId;
  //    jlogger.link_span_id = this.linkSpanId;
  //    jlogger.link_parent_id = this.linkParentId;
  //    jlogger.link_exportabel_id = this.linkExportabelId;
  //    jlogger.user_key = this.userKey;
  //    jlogger.user_id = this.userId;
  //    jlogger.user_name = this.userName;
  //    jlogger.request_url = this.requestUrl;
  //    jlogger.request_method = this.requestMethod;
  //    jlogger.request_query = this.requestQuery;
  //    jlogger.request_body = this.requestBody;
  //    jlogger.date = this.date;
  //    // 保存错误
  //    var error = this.error;
  //    if (error != null) {
  //       jlogger.error = FatalUtil.saveJson(error);
  //    }
  //    // 保存对战
  //    var stacks = this.stacks;
  //    var count = stacks.count;
  //    if (count > 0) {
  //       var jstacks = jlogger.stacks = new Array<ProcessStack>();
  //       for (var i = 0; i < count; i++) {
  //          var stack = stacks.get(i);
  //          var jstack = stack.saveJson();
  //          jstacks.push(jstack);
  //       }
  //    }
  //    return jlogger;
  // }

  // /**
  //  * 释放处理。
  //  */
  // public free(): void {
  //    this.sender = null;
  //    this.id = null;
  //    this.version = null;
  //    this.environment = null;
  //    this.levelCd = null;
  //    this.code = null;
  //    this.message = null;
  //    this.messageCode = null;
  //    this.parameters = null;
  //    this.processName = null;
  //    this.projectVersion = null;
  //    this.moduleName = null;
  //    this.className = null;
  //    this.fileName = null;
  //    this.fileNumber = null;
  //    this.recordHostname = null;
  //    this.recordIp = null;
  //    this.recordThreadId = null;
  //    this.recordThreadName = null;
  //    this.threadCode = null;
  //    this.forwardHostname = null;
  //    this.forwardIp = null;
  //    this.requestProjectName = null;
  //    this.processName = null;
  //    this.processId = null;
  //    this.linkTraceId = null;
  //    this.linkSpanId = null;
  //    this.linkParentId = null;
  //    this.linkExportabelId = null;
  //    this.userKey = null;
  //    this.userId = null;
  //    this.userName = null;
  //    this.requestUrl = null;
  //    this.requestMethod = null;
  //    this.requestQuery = null;
  //    this.requestBody = null;
  //    this.description = null;
  //    this.date = null;
  //    this.error = null;
  //    this.stacks.clear();
  // }

  // /**
  //  * 重置处理。
  //  */
  // public reset(): LoggerItem {
  //    this.free();
  //    return this;
  // }
}
